import tkinter as tk
from tkinter import ttk, messagebox
import pandas as pd
import plotly.express as px
# Funcion de carga y muestra de datos
def mostrar_datos():
try:
# Carga de tabla Excel en formato .XLSX
path = "Steeldata2.xlsx"
df = pd.read_excel(path)
# Filtra datos segun año seleccionado y material
año_seleccionado = int(combo_años.get())
mat_seleccionado = combo_mat.get()
df_filtrado = df[(df['DECADA'] == año_seleccionado) & (df['MATERIAL'] == mat_seleccionado)]
print(df_filtrado)
# Crea graficos de columnas
gra_01 = px.bar(df_filtrado, x='PAIS', y='PRODUCCION',
title=f'Produccion de {mat_seleccionado} en la decada de {año_seleccionado} (en millones de toneladas)',
color="PAIS", text_auto=True)
gra_01.show()
gra_02 = px.bar(df_filtrado, x="PAIS", y=["INTERNO", "EXPORT"],
title=f"Consumo interno y exportaciones de {mat_seleccionado} en la decada de {año_seleccionado}\
(en millones de toneladas)",text_auto=True)
gra_02.show()
# Crea mapamundi
map_01 = px.choropleth(df_filtrado, locations='PAIS', locationmode='country names', color='PRODUCCION',
title=f'Cinco principales productores de {mat_seleccionado} en la decada de {año_seleccionado}\
(en millones de toneladas)')
map_01.show()
# Crea grafico de lineas con fluctuaciones de producciones del material seleccionado
df_filtrado_material = df[df['MATERIAL'] == mat_seleccionado]
lines_01 = px.line(df_filtrado_material, x='DECADA', y='PRODUCCION', color='PAIS', line_group='PAIS',
hover_name='PAIS',
title=f'Fluctuaciones de la produccion de {mat_seleccionado} a lo largo de las decadas')
lines_01.show()
# Crea grafico de burbujas comparativo decadas/materiales/paises/producciones
fig_01 = px.scatter(df, x="DECADA", y="MATERIAL", size="PRODUCCION", color="PAIS",log_x=True, size_max=100,
title="Comparativa decadas/materiales/paises/producciones")
fig_01.show()
except Exception as e:
messagebox.showerror("Error", f"No se pudo cargar los datos: {e}")
# Configuracion de interfaz grafica
root = tk.Tk()
root.geometry("550x300")
root.title("-PRINCIPALES PRODUCTORES DE METALES POR DECADAS 1950-2020-")
root.iconbitmap('Viga.ico')
# Selector de años
label_años = tk.Label(root, text="SELECCIONE LA DECADA:")
label_años.pack(pady=5)
combo_años = ttk.Combobox(root, values=[1950, 1960, 1970, 1980, 1990, 2000, 2010])
combo_años.pack(pady=10)
combo_años.current(0)
# Selector Acero/Cobre/Aluminio
label_mat = tk.Label(root, text="SELECCIONE UN MATERIAL:")
label_mat.pack(pady=5)
combo_mat = ttk.Combobox(root, values=["ACERO", "COBRE" , "ALUMINIO"])
combo_mat.pack(pady=10)
combo_mat.current(0)
# Boton para mostrar datos
btn_mostrar = tk.Button(root, text="MOSTRAR PRODUCCION", command=mostrar_datos)
btn_mostrar.pack(pady=50)
# Ejecutar aplicacion
root.mainloop()